# @Time   : 2022/7/6 10:32
# @Author : Gavin Jiang
# @Owner  : YSRD (Insights Value)
import logging
from abc import ABCMeta

from flask import current_app

from framework.exception import UnimplementedException


class AbstractViewModel(metaclass=ABCMeta):
    """
    视图模型
    """

    def __init__(self, raw_result):
        self._logger = logging.getLogger(__name__)
        self.raw_result = raw_result
        self.result = self.nice_result()

    def nice_result(self):
        if current_app.config['_API_NICE_RESP']:
            return self.process(self.raw_result)

        self._logger.warning(f"未实现process方法，view model层不起作用！")
        return self.raw_result

    def process(self, raw_result):
        """
        之类应重写该方法以返回良好的结果
        Args:
            raw_result:

        Returns:

        """
        self._logger.error("需实现__process()函数以对返回给前端的结果进行处理！！！")
        raise UnimplementedException